درس نهم

ابزار وبلاگ

Computer
درباره وبلاگ


سلام این وبلاگ جهت آموزش برنامه نویسی ویژوال ساخته شده است آموزش سی شارپ ، ASP.net, ویژوال استودیو انشاءالله که به دردتون بخوره!!!!!
نويسندگان
دو شنبه 4 دی 1391برچسب:, :: 7:47 :: نويسنده : مصطفی

 ﭼﮕﻮﻧﻪ از ﻳﻚ ﺗﺎﺑﻊ ﺑﯿﺶ از ﻳﻚ ﺧﺮوﺟﻲ درﻳﺎﻓﺖ ﻛﻨﯿﻢ ؟


‫ﻇﺎھﺮا ﺑﻪ ﻧﻈﺮ ﻣﻲ رﺳﺪ ﻛﻪ ﺗﻮاﺑﻊ ﻓﻘﻂ ﻣﻲ ﺗﻮاﻧﻨﺪ ﻳﻚ ‪ return‬ داﺷﺘﻪ ﺑﺎﺷﻨﺪ و ﺑﻼﻓﺎﺻﻠﻪ ﭘـﺲ از ﻓﺮاﺧـﻮاﻧﻲ ‪ return‬ ﻛـﺎر‬ ‫ﺗﺎﺑﻊ ﭘﺎﻳﺎن ﻳﺎﻓﺘﻪ اﺳﺖ. در ﺳﻲ ﺷﺎرپ دو ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ﺑﻪ ﻧﺎم ھﺎی ‪ ref‬ و ‪ out‬ اﺿﺎﻓﻪ ﺷﺪه اﻧﺪ ﻛﻪ اﻳﻦ اﻣﺮ را ﺳﺎده‬ ‫ﺗﺮ ﻣﻲ ﻛﻨﻨﺪ.‬

‫اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪: out‬‬

‫از ‪ out‬ در ﺗﻌﺮﻳﻒ ﺗﺎﺑﻊ ﻗﺒﻞ از ﻣﻌﺮﻓﻲ ﻧـﻮع آرﮔﻮﻣـﺎن ورودی اﺳـﺘﻔﺎده ﻣـﻲ ﻛﻨـﯿﻢ . در اﻳـﻦ ﺣﺎﻟـﺖ ﺑﺠـﺎی اﻳﻨﻜـﻪ ﺑـﻪ اﻳـﻦ ‫آرﮔﻮﻣﺎن ، آرﮔﻮﻣﺎن ورودی ﺑﮕﻮﻳﯿﻢ ، ﻣﻲ ﺗﻮان آﻧﺮا آرﮔﻮﻣﺎن ﺧﺮوﺟﻲ ﻧﺎﻣﯿـﺪ. ﺗـﺎ ﻳـﻚ ﻣﺜـﺎل را در اﻳـﻦ زﻣﯿﻨـﻪ ﺑـﺎ ھـﻢ ﻣـﺮور‬ ‫ﻧﻜﻨﯿﻢ اﻳﻦ ﻣﻮرد ﻣﻔﮫﻮم ﻧﺨﻮاھﺪ ﺑﻮد :‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۵‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬

‫;‪using System‬‬

‫‪namespace ex۱۵‬‬
‫}‬
‫‪class Class۱‬‬
‫}‬

‫( ‪public static int TestOut( out char i‬‬
‫}
‫;'‪i = 'b‬‬
‫;۱- ‪return‬‬
‫{‬

‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}‬
‫;‪char i‬‬ ‫‪// variable need not be initialized‬‬
‫;((‪Console.WriteLine(TestOut(out i‬‬
‫;(‪Console.WriteLine(i‬‬
‫;()‪Console.ReadLine‬‬
‫{‬
{
‫{


‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١- در ﺗﺎﺑﻊ ‪ TestOut‬آرﮔﻮﻣﺎن ‪ i‬از ﺑﺎ ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪ out‬ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ. ﻳﻌﻨﻲ اﻳﻨﻜﻪ درون ﺗﺎﺑﻊ ھـﺮ ﮔﻮﻧـﻪ‬ ‫ﺗﻐﯿﯿﺮی روی ‪ i‬ اﻧﺠﺎم ﺷﻮد ، ﺧﺎرج از ﺗﺎﺑﻊ ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ اﺳﺖ.‬
‫٢- ﺗﻮاﺑﻌﻲ ﻛﻪ دارای آرﮔﻮﻣﺎﻧﮫﺎﻳﻲ ﺗﻌﺮﻳﻒ ﺷﺪه ﺑﺎ ﻛﻠﻤﻪ ی ﻛﻠﯿـﺪی ‪ out‬ھـﺴﺘﻨﺪ ﻧﯿـﺰ ﻣـﻲ ﺗﻮاﻧﻨـﺪ از ‪ return‬ ھـﻢ‬ ‫اﺳﺘﻔﺎده ﻛﻨﻨﺪ. ھﻤﺎﻧﻨﺪ ﻣﺜﺎل ﻓﻮق.‬

 

اﺳﺘﻔﺎده از ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ‪: ref‬‬

‫اﻳﻦ ﻛﻠﻤﻪ ی ﻛﻠﯿﺪی ﻧﯿﺰ دﻗﯿﻘﺎ ھﻤﺎﻧﻨﺪ ‪ out‬ ﻋﻤﻞ ﻣﻲ ﻛﻨﺪ و ﻧﺤﻮه ی ﺗﻌﺮﻳﻒ و اﺳﺘﻔﺎده از آن ﻧﯿﺰ ﻣﺸﺎﺑﻪ اﺳـﺖ ﺑـﺎ اﻳـﻦ‬ ‫ﺗﻔﺎوت ﻛﻪ آرﮔﻮﻣﺎﻧﻲ ﻛﻪ ﺑﻪ اﻳﻦ ﻧﻮع ﺗﻮاﺑﻊ ﻓﺮﺳﺘﺎده ﻣﻲ ﺷﻮد ﺑﺎﻳﺪ ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ﺷﺪه ﺑﺎﺷﺪ.‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۶‬ اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬

‫;‪using System‬‬

‫‪namespace ex۱۶‬‬
‫}‬
‪class Class۱‬‬
‫}‬
(‪public static void FillArray(ref int[] arr‬‬
‫}‬
‫:‪// Create the array on demand‬‬
‫(‪if (arr == null‬‬
‫;[۰۱]‪arr = new int‬‬
‫:‪// Otherwise fill the array‬‬
‫;۳۲۱ = [۰]‪arr‬‬
‫;۴۲۰۱ = [۴]‪arr‬‬
{‬

‫[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
}
‫:‪// Initialize the array‬‬
‫;{۵,۴,۳,۲,۱} = ‪int[] myArray‬‬

‫:‪// Pass the array using ref‬‬
‫;(‪FillArray(ref myArray‬‬

‫:‪// Display the updated array‬‬
‫;(":‪Console.WriteLine("Array elements are‬‬
‫(++‪for (int i = ۰; i < myArray.Length; i‬‬
‫;([‪Console.WriteLine(myArray[i‬‬
‫;()‪Console.ReadLine‬‬
{‬
{
‫{‬



‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬
‫١- ھﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻲ ﻛﻨﯿﺪ در اﻳﻨﺠﺎ ھﻨﮕﺎم اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ FillArray‬ﺑﺎﻳﺪ آرﮔﻮﻣﺎﻧﻲ را ﻛﻪ ﻣﻲ ﺧـﻮاھﯿﻢ ‫ﺑﻪ آن ﭘﺎس ﻛﻨﯿﻢ ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ﻛﻨﯿﻢ.‬
‫٢- ﭘﺲ ﻣﻲ ﺗﻮان ﻧﺘﯿﺠﻪ ﮔﺮﻓﺖ آرﮔﻮﻣﺎﻧﮫﺎﻳﻲ ﻛﻪ ﺑﺎ ‪ out‬ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ﺑـﻪ ﺻـﻮرت ﺧـﺎﻟﺺ ﺧﺮوﺟـﻲ ھـﺴﺘﻨﺪ و‬ ‫ﻧﯿﺎزی ﺑﻪ ﻣﻘﺪار دھﻲ اوﻟﯿﻪ ھﻨﮕـﺎم اﺳـﺘﻔﺎده از آﻧﮫـﺎ وﺟـﻮد ﻧـﺪارد. از ‪ ref‬ ھﻨﮕـﺎﻣﻲ اﺳـﺘﻔﺎده ﻣـﻲ ﻛﻨـﯿﻢ ﻛـﻪ‬ ‫ﺑﺨﻮاھﯿﻢ روی ﻣﺘﻐﯿﺮ ﻣﻮﺟﻮد و ﻣﻘﺪار دھﻲ ﺷﺪه ی ﺧﺎرج از ﺗﺎﺑﻊ ، درون ﺗﺎﺑﻊ ﻋﻤﻠﯿﺎﺗﻲ ﺻﻮرت ﮔﯿﺮد و ﺳـﭙﺲ‬ ‫ھﻤﺎن ﻣﺘﻐﯿﺮ دﺳﺘﻜﺎری ﺷﺪه ، ﻋﻮدت داده ﺷﻮد.‬


‫ﺗﻌﺮﻳﻒ ﺗﺎﺑﻌﻲ ﺑﺎ ﺗﻌﺪاد آرﮔﻮﻣﺎﻧﮫﺎی ﻧﺎﻣﻌﻠﻮم :‬

‫ﮔﺎھﻲ از اوﻗﺎت ﻧﯿﺎز اﺳﺖ ﺗﺎ ﺗﺎﺑﻌﻲ ﺗﻌﺮﻳﻒ ﻛﻨﯿﻢ ﻛﻪ ﺗﻌﺪاد آرﮔﻮﻣﺎﻧﮫﺎی آن ﻣﺘﻐﯿﺮ ﺑﺎﺷـﻨﺪ .ﺑـﺮای اﻳـﻦ ﻣﻨﻈـﻮر از ﻛﻠﻤـﻪ ی‬ ‫ﻛﻠﯿﺪی ‪ params‬ اﺳﺘﻔﺎده ﻣﻲ ﺷﻮد.‬
‫دوﻧﻜﺘﻪ در اﻳﻨﺠﺎ ﺣﺎﺋﺰ اھﻤﯿﺖ اﺳﺖ:‬
‫١- در ھﺮ ﺗﺎﺑﻌﻲ ﺗﻨﮫﺎ ﻣﻲ ﺗﻮان ﻳﻜﺒﺎر از ‪ params‬اﺳﺘﻔﺎده ﻛﺮد.‬
‫٢- ﭘﺲ از ﺑﻜﺎر ﺑﺮدن ‪ params‬ دﻳﮕﺮ ﻧﻤﻲ ﺗﻮان ھﯿﭻ آرﮔﻮﻣﺎﻧﻲ را ﺗﻌﺮﻳﻒ ﻛﺮد.‬

‫ﻳﻜﻲ از ﻣﺜﺎﻟﮫﺎﻳﻲ ﻛﻪ در اﻳﻦ زﻣﯿﻨﻪ ﻣﻲ ﺗﻮان اراﺋﻪ داد اﺳﺘﻔﺎده از آراﻳـﻪ ھـﺎ ﺑـﻪ ﻋﻨـﻮان آرﮔﻮﻣـﺎن ورودی اﺳـﺖ. در اﻳـﻦ ‫ﺣﺎﻟﺖ ﻳﺎ ﻣﻲ ﺗﻮان ﻳﻚ آراﻳﻪ را ﺑﻪ ﺻﻮرت ﻛﺎﻣﻞ ﺑﻪ ﺗﺎﺑﻊ ﻣﻌﺮﻓﻲ ﻛﺮد و ﻳـﺎ ﺗﻨﮫـﺎ ﻧـﺎم آﻧـﺮا ﺑـﻪ ﺗـﺎﺑﻊ ﭘـﺎس ﻛـﺮد. ﻣﺜـﺎل زﻳـﺮ را‬ ‫ﻣﻼﺣﻈﻪ ﻛﻨﯿﺪ :‬

‫ﻣﺜﺎل : ﻳﻚ ﺑﺮﻧﺎﻣـﻪ ی ﺳـﻲ ﺷـﺎرپ ﺟﺪﻳـﺪ ‪ console‬را در ‪ VS.NET‬ﺑـﺎز ﻛﻨﯿـﺪ و ﻧـﺎم آﻧـﺮا دراﺑﺘـﺪا ‪ ex۱۷‬اﻧﺘﺨـﺎب ﻧﻤﺎﻳﯿـﺪ.‬
‫ﺳﭙﺲ ﻛﺪ زﻳﺮ را درون آن ﺑﻨﻮﻳﺴﯿﺪ :‬

‫;‪using System‬‬

‫‪namespace ex۱۷‬‬
‫}‬
‪class Class۱‬‬
‫}

(‪public static void UseParams(params int[] list‬‬
‫}
( ++‪for ( int i = ۰ ; i < list.Length ; i‬‬
‫;([‪Console.WriteLine(list[i‬‬
‫;()‪Console.WriteLine‬‬
‫{‬

[‪[STAThread‬‬
‫(‪static void Main(string[] args‬‬
‫}
‫;(۳ ,۲ ,۱)‪UseParams‬‬

‫;{۲۱,۱۱,۰۱} [۳]‪int[] myarray = new int‬‬
‫;(‪UseParams(myarray‬‬

‫;()‪Console.ReadLine‬‬

‫{‬
{‬
‫{‬


‫ﺗﻮﺿﯿﺤﺎﺗﻲ در ﻣﻮرد ﻛﺪ ﻓﻮق :‬

‫١- در ﺗﺎﺑﻊ ‪ main‬ ﺑﻪ دو ﺻﻮرت از ﺗﺎﺑﻊ ‪ UseParams‬ اﺳﺘﻔﺎده ﺷﺪه اﺳـﺖ. ﻳـﺎ اﻳﻨﻜـﻪ ﺧﯿﻠـﻲ ﺳـﺎده ھـﺮ ﺗﻌـﺪاد ‫آرﮔﻮﻣﺎن را ﻣﻲ ﺗﻮان ﺑﻪ ﺗﺎﺑﻊ ﻓﺮﺳﺘﺎد و ﻳﺎ اﻳﻨﻜﻪ در اداﻣﻪ آراﻳﻪ اﻳﻲ رﺳﻤﺎ ﺗﻌﺮﻳـﻒ و ﺳـﭙﺲ ﺑـﻪ ﺗـﺎﺑﻊ ﻓﺮﺳـﺘﺎده‬ ‫ﺷﻮد.‬
‫٢- ﻧﺤﻮه ی ﺗﻌﺮﻳﻒ و اﺳﺘﻔﺎده از آراﻳﻪ ھﺎ ﺑﻪ ﺻﻮرت آرﮔﻮﻣﺎن ورودی را ﻧﯿﺰ ﻣﻲ ﺗﻮان در ﻣﺜﺎل ﻓﻮق آﻣﻮﺧﺖ.‬

 


منبع : برگرفته از سایت Vcsharp.ir


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:





پيوندها



نام :
وب :
پیام :
2+2=:
(Refresh)

خبرنامه وب سایت:





آمار وب سایت:  

بازدید امروز : 6
بازدید دیروز : 4
بازدید هفته : 6
بازدید ماه : 19
بازدید کل : 3344
تعداد مطالب : 14
تعداد نظرات : 5
تعداد آنلاین : 1


ابزار هدایت به بالای صفحه